#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:taotieren


"""
    rpi.gpio 需要 root 权限，板上运行需要使用
    sudo python temp_DS18B20.py
    使用 DS18B20 读取温度
        DS18B20 温度传感器，1 个 4.7KΩ 电阻
        5V ---------- DS18B20_Pin1 (VCC)
                   |
                   |
                  4.7K
                   |
                   |
        TXD ---------- DS18B20_Pin2 (IO)
        GND ---------- DS18B20_Pin3 (GND)
    需要在终端启用 DS18B20 单线通信
        $ dtoverlay=w1-gpio
    如果有多个设备请在方括号内指定索引值（glob.glob(base_dir + '28*')[0]）
"""

""" 非树莓派环境下可以用 rpi.gpio_def 代替 rpi.gpio 来进行程序调试和验证 """
import glob, time

base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'


def read_temp_raw():
    f = open(device_file, 'r')
    lines = f.readline()
    f.close()
    return lines


def read_temp():
    lines = read_temp_raw()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = read_temp_raw()
    equals_pos = lines[1].find('t=')
    if equals_pos != -1:
        temp_string = lines[1][equals_pos + 2:]
        temp_c = float(temp_string) / 1000.0
        temp_f = temp_c * 9.0 / 5.0 + 32.0
        return temp_c, temp_f


while True:
    print("temp C=%f\ttemp F=%f" % read_temp())
    time.sleep(1)
